extensionSystem: Fix extension enabling/disabling order
Move disabling of unneeded extensions before enabling new ones
in _onEnabledExtensionsChanged(). Previously, conflicting
extensions could simultaneously be active briefly, leading to
unclean states, memory leaks, freezes, or crashes.
The old logic also caused unnecessary disable/enable cycles
for newly requested extensions, wasting resources. Running
the disable step first prevents these issues.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3835>
(cherry picked from commit
d3390d1afecbc7829b1618b99995f48eddb90f4a)